home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d18
/
bowlave2.arc
/
BOWLAVE.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1991-08-18
|
10KB
|
239 lines
PROGRAM BOWLFRI;
{ KEEPS RECORD ON HOW BRUCE BOWLS ON FRIDAY LEAGUE }
{ STARTED 9/8/90 }
{ REVISED FOR 2 PEOPLE ON 8/17/91 }
CONST
MAXIMUM=60;
MAXPEOPLE=5;
MAXGAMES=3;
VAR
NAME : ARRAY[1..MAXPEOPLE] OF STRING[19];
GAME : ARRAY[1..MAXPEOPLE,1..MAXIMUM,1..MAXGAMES] OF INTEGER;
AVERAGE,SERIES : ARRAY[1..MAXPEOPLE,1..MAXIMUM] OF INTEGER;
CONT,PEOPLE,X,Y,DELAY,TT,CODE,GG,S,J : INTEGER;
TOTALPINS,ENTRIES,HIGHGAME,HIGHSERIES,HIGHAVERAGE : ARRAY[1..MAXPEOPLE] OF INTEGER;
AVG : REAL;
FILENAME : TEXT;
UPDATE,TEST : STRING[19];
PAUSE,ASK : CHAR;
PROCEDURE HIGHS;
BEGIN
FOR X:=1 TO PEOPLE DO BEGIN TT:=50;
FOR J:=1 TO ENTRIES[X] DO BEGIN
FOR S:=1 TO MAXGAMES DO BEGIN
IF GAME[X,J,S]>TT THEN BEGIN HIGHGAME[X]:=GAME[X,J,S]; TT:=HIGHGAME[X]; END;
END;
END;
END;
FOR X:=1 TO PEOPLE DO BEGIN TT:=50;
FOR J:=1 TO ENTRIES[X] DO BEGIN
IF SERIES[X,J]>TT THEN BEGIN HIGHSERIES[X]:=SERIES[X,J]; TT:=HIGHSERIES[X]; END;
END;
END;
FOR X:=1 TO PEOPLE DO BEGIN TT:=50;
FOR J:=1 TO ENTRIES[X] DO BEGIN
IF AVERAGE[X,J]>TT THEN BEGIN HIGHAVERAGE[X]:=AVERAGE[X,J]; TT:=HIGHAVERAGE[X]; END;
END;
END;
END;
PROCEDURE CLEAR_VARIABLES;
BEGIN
FOR J:=1 TO MAXPEOPLE DO BEGIN
HIGHGAME[J]:=0; HIGHSERIES[J]:=0; HIGHAVERAGE[J]:=0; ENTRIES[J]:=0; NAME[J]:=(' ');
TOTALPINS[J]:=0;
FOR X:=1 TO MAXIMUM DO BEGIN
AVERAGE[J,X]:=0; SERIES[J,X]:=0;
FOR S:=1 TO MAXGAMES DO BEGIN
GAME[J,X,S]:=0;
END; END; END;
X:=0; Y:=0; DELAY:=0; TT:=0; CODE:=0; CONT:=0; UPDATE:=(' ');
GG:=0; S:=0; J:=0; AVG:=0; TEST:=(' '); PEOPLE:=0;
END;
PROCEDURE DISPLAY;
BEGIN
CONT:=0;
REPEAT
CONT:=CONT+1; HIRES; HIRESCOLOR(BLUE); J:=0; DRAW(10,5,10,81,1);
REPEAT
J:=J+32; DRAW(10+J,5,10+J,81,1);
UNTIL J>600;
DRAW(10,50,617,50,1); DRAW(10,35,617,35,1); DRAW(10,20,617,20,1); DRAW(10,5,617,5,1);
DRAW(10,81,617,81,1); DRAW(10,68,617,68,1); DRAW(10,66,617,66,1); DRAW(10,52,617,52,1);
DRAW(10,109,10,185,1); J:=0;
REPEAT
J:=J+32; DRAW(10+J,109,10+J,185,1);
UNTIL J>600;
DRAW(10,139,617,139,1); DRAW(10,124,617,124,1); DRAW(10,109,617,109,1);
DRAW(10,170,617,170,1); DRAW(10,156,617,156,1); DRAW(10,154,617,154,1);
DRAW(10,185,617,185,1); DRAW(10,172,617,172,1); X:=3; Y:=0; GG:=0; TOTALPINS[CONT]:=0;
FOR J:=1 TO ENTRIES[CONT] DO
BEGIN
IF J<20 THEN BEGIN
IF J>1 THEN BEGIN X:=X+4; Y:=0; END;
IF J=1 THEN BEGIN X:=3; Y:=0; END;
FOR S:=1 TO 3 DO
BEGIN
GG:=GG+1; Y:=Y+2; GOTOXY(X,Y); WRITE(GAME[CONT,J,S]);
END;
SERIES[CONT,J]:=GAME[CONT,J,1]+GAME[CONT,J,2]+GAME[CONT,J,3]; TOTALPINS[CONT]:=TOTALPINS[CONT]+SERIES[CONT,J];
GOTOXY(X,Y+2); WRITE(SERIES[CONT,J]);
AVG:=TOTALPINS[CONT]/GG; STR(AVG,TEST); TEST:=COPY(TEST,3,4); DELETE(TEST,2,1);
VAL(TEST,AVERAGE[CONT,J],CODE); GOTOXY(X,Y+4); WRITE(AVERAGE[CONT,J]);
END;
IF J>19 THEN BEGIN
IF J>20 THEN BEGIN X:=X+4; Y:=13; END;
IF J=20 THEN BEGIN X:=3; Y:=13; END;
FOR S:=1 TO 3 DO
BEGIN
GG:=GG+1; Y:=Y+2; GOTOXY(X,Y); WRITE(GAME[CONT,J,S]);
END;
SERIES[CONT,J]:=GAME[CONT,J,1]+GAME[CONT,J,2]+GAME[CONT,J,3]; TOTALPINS[CONT]:=TOTALPINS[CONT]+SERIES[CONT,J];
GOTOXY(X,Y+2); WRITE(SERIES[CONT,J]);
AVG:=TOTALPINS[CONT]/GG; STR(AVG,TEST); TEST:=COPY(TEST,3,4); DELETE(TEST,2,1);
VAL(TEST,AVERAGE[CONT,J],CODE); GOTOXY(X,Y+4); WRITE(AVERAGE[CONT,J]);
END;
END;
HIGHS;
GOTOXY(3,12); WRITE('HIGH GAME: ',HIGHGAME[CONT]); GOTOXY(29,12); WRITE('HIGH AVERAGE: ',HIGHAVERAGE[CONT]);
GOTOXY(58,12); WRITE('HIGH SERIES: ',HIGHSERIES[CONT]);
GOTOXY(18,25); WRITE('DISPLAYING INFORMATION FOR <<',NAME[CONT],'>>');
READLN(PAUSE);
UNTIL CONT=PEOPLE;
END;
PROCEDURE GET_INFO;
BEGIN
ASSIGN(FILENAME,'BOWLAVE.DIR'); RESET(FILENAME); READLN(FILENAME,PEOPLE);
FOR X:=1 TO PEOPLE DO BEGIN READLN(FILENAME,ENTRIES[X]);
READLN(FILENAME,NAME[X]);
FOR J:=1 TO ENTRIES[X] DO BEGIN
FOR S:=1 TO 3 DO BEGIN READLN(FILENAME,GAME[X,J,S]); END;
END; END;
CLOSE(FILENAME);
END;
PROCEDURE ADD;
BEGIN
CLRSCR; FOR J:=1 TO PEOPLE DO BEGIN WRITELN; WRITELN(NAME[J]); END; WRITELN;
WRITE('ENTER THE PERSONS NAME TO UPDATE OR ENTER "ALL" TO UPDATE EVERYONES: ');
READLN(UPDATE);
CONT:=0;
REPEAT
CONT:=CONT+1; CLRSCR;
IF (UPDATE='ALL') OR (UPDATE=NAME[CONT]) THEN BEGIN
FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
WRITE(CHR(201)); FOR J:=1 TO (28+LENGTH(NAME[CONT])) DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(187));
FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
WRITE(CHR(186)); WRITE(' ADDING GAMES BOWLED. . . ',NAME[CONT],' '); WRITELN(CHR(186));
FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
WRITE(CHR(200)); FOR J:=1 TO (28+LENGTH(NAME[CONT])) DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(188));
WRITELN; WRITELN;
TEXTCOLOR(RED); FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
WRITE(CHR(201)); FOR J:=1 TO 28 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(187));
FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
WRITE(CHR(186)); WRITE(' ENTER FIRST GAME: '); WRITELN(CHR(186));
FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
WRITE(CHR(186)); WRITE(' ENTER SECOND GAME: '); WRITELN(CHR(186));
FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
WRITE(CHR(186)); WRITE(' ENTER THIRD GAME: '); WRITELN(CHR(186));
FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
WRITE(CHR(200)); FOR J:=1 TO 28 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(188));
ENTRIES[CONT]:=ENTRIES[CONT]+1;
GOTOXY(37,7); BUFLEN:=3; READLN(GAME[CONT,ENTRIES[CONT],1]);
GOTOXY(37,8); BUFLEN:=3; READLN(GAME[CONT,ENTRIES[CONT],2]);
GOTOXY(37,9); BUFLEN:=3; READLN(GAME[CONT,ENTRIES[CONT],3]);
SERIES[CONT,ENTRIES[CONT]]:=GAME[CONT,ENTRIES[CONT],1]+GAME[CONT,ENTRIES[CONT],2]+GAME[CONT,ENTRIES[CONT],3];
TOTALPINS[CONT]:=TOTALPINS[CONT]+SERIES[CONT,J];
END;
UNTIL CONT=PEOPLE;
END;
PROCEDURE SAVE;
BEGIN
ASSIGN(FILENAME,'BOWLAVE.DIR'); REWRITE(FILENAME); WRITELN(FILENAME,PEOPLE);
FOR X:=1 TO PEOPLE DO BEGIN WRITELN(FILENAME,ENTRIES[X]);
WRITELN(FILENAME,NAME[X]);
FOR J:=1 TO ENTRIES[X] DO BEGIN
FOR S:=1 TO 3 DO BEGIN WRITELN(FILENAME,GAME[X,J,S]); END;
END; END;
CLOSE(FILENAME);
END;
PROCEDURE ERASE2;
BEGIN
CLRSCR; WRITE(' DO YOU REALLY WANT TO ERASE ALL THE INFO SAVED TO THE FILE (Y/N):'); READ(KBD,PAUSE);
IF (PAUSE='Y') OR (PAUSE='y') THEN BEGIN
ASSIGN(FILENAME,'BOWLAVE.DIR'); REWRITE(FILENAME); WRITELN(FILENAME,'0');
CLOSE(FILENAME);
CLEAR_VARIABLES;
WRITELN; WRITE('ENTER THE NUMBER OF PERSONS TO SET-UP FOR (1-',MAXPEOPLE,'): '); READ(KBD,PAUSE);
VAL(PAUSE,PEOPLE,CODE);
FOR X:=1 TO PEOPLE DO BEGIN
WRITELN; WRITE('ENTER THE NAME OF PERSON NUMBER ',X,': '); READLN(NAME[X]);
END;
CLRSCR; WRITELN(' YOUR PROGRAM HAS NOW BEEN SET-UP FOR ',PEOPLE,' PERSON(S) WITH THE FOLLOWING NAMES');
FOR X:=1 TO PEOPLE DO BEGIN WRITELN; WRITELN(NAME[X]); END;
WRITELN; WRITE(' HIT <RETURN> TO GO BACK TO THE MAIN MENU '); READ(KBD,PAUSE);
END;
END;
PROCEDURE ENDING;
BEGIN
CLRSCR; WRITE(' IF YOU FORGOT TO UPDATE YOUR INFO YOU CAN DO IT NOW, SAVE (Y/N): ');
READ(KBD,PAUSE);
IF (PAUSE='Y') OR (PAUSE='y') THEN BEGIN
SAVE; WRITELN; WRITELN(' YOUR INFO HAS BEEN UPDATED, GOOD BOWLING.'); WRITELN; WRITELN;
END;
END;
BEGIN
CLRSCR; CLEAR_VARIABLES; GET_INFO;
REPEAT
CLRSCR; TEXTMODE; FOR J:=1 TO 18 DO BEGIN WRITE(' '); END;
WRITE(CHR(201)); FOR J:=1 TO 25 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(187));
FOR J:=1 TO 18 DO BEGIN WRITE(' '); END;
WRITE(CHR(186)); WRITE(' BOWLING INFORMATION '); WRITELN(CHR(186));
FOR J:=1 TO 18 DO BEGIN WRITE(' '); END;
WRITE(CHR(200)); FOR J:=1 TO 25 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(188));
GOTOXY(1,23); WRITE('THIS PROGRAM HAS BEEN SET-UP FOR ');
FOR J:=1 TO PEOPLE DO BEGIN
IF J=PEOPLE THEN BEGIN WRITE(' ',NAME[J]); END;
IF J<PEOPLE THEN BEGIN WRITE(' ',NAME[J],','); END; END;
GOTOXY(1,6); TEXTCOLOR(RED);
FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
WRITE(CHR(213)); FOR J:=1 TO 32 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(184));
FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
WRITE(CHR(179)); WRITE(' 1. ADD NEW GAMES '); WRITELN(CHR(179));
FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
WRITE(CHR(179)); WRITE(' 2. DISPLAY SCORES & AVERAGES '); WRITELN(CHR(179));
FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
WRITE(CHR(179)); WRITE(' 3. SAVE '); WRITELN(CHR(179));
FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
WRITE(CHR(179)); WRITE(' 8. ERASE ALL INFO FROM FILE '); WRITELN(CHR(179));
FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
WRITE(CHR(179)); WRITE(' 9. QUIT '); WRITELN(CHR(179));
FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
WRITE(CHR(212)); FOR J:=1 TO 32 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(190)); WRITELN;
FOR J:=1 TO 21 DO BEGIN WRITE(' '); END;
WRITE(CHR(201)); FOR J:=1 TO 18 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(187));
FOR J:=1 TO 21 DO BEGIN WRITE(' '); END;
WRITE(CHR(186)); WRITE(' ENTER NUMBER: '); WRITELN(CHR(186));
FOR J:=1 TO 21 DO BEGIN WRITE(' '); END;
WRITE(CHR(200)); FOR J:=1 TO 18 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(188));
TEXTCOLOR(WHITE); GOTOXY(38,15); READ(KBD,ASK); WRITE(ASK);
IF ASK='1' THEN BEGIN ADD; END;
IF ASK='2' THEN BEGIN DISPLAY; END;
IF ASK='3' THEN BEGIN SAVE; END;
IF ASK='8' THEN BEGIN ERASE2; END;
UNTIL ASK='9';
CLRSCR; ENDING;
END.